首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏巴啦啦的积累

    架构整洁之道》第 22 章 整洁架构

    在过去几十年中,有一系列关于系统架构的想法被提出,例如六边形架构DCI架构BCE架构虽然这些架构在细节上各有不同,但总体是相似的,它们都有一个共同的目标,按照不同的关注点对软件进行切割分层,并且至少有一层是只包含该软件的业务逻辑的 这些架构通常具有以下特点。独立于框架:系统架构不依赖于框架中的某个函数。不需要让系统来适应框架。可被测试:系统的业务逻辑可以脱离UI,数据库,Web服务和其他外部元素,从而进行测试。 只有四层吗图中的同心圆,只是为了说明架构的结构,真正的架构很可能超过这四层。但是这其中的依赖关系原则是不变的。即只能由外层依赖内层。最内层是最核心的策略,最外层是最具体的细节。 例如,可以用过调整代码中的接口和继承关系,利用源码中的依赖关系,来限制控制流只能在正确的地方跨越架构边界。 我们可以采用这种方式来跨越系统中的所有的架构边界。利用多态技术,我们将源码中的依赖关系和控制流的方向进行反转。不管控制流的方向如何,我们都可以让它遵守架构的依赖关系规则。

    68720编辑于 2023-06-08
  • 来自专栏海仔技术驿站

    架构整洁之道

    版本迭代 -- 代码变更行数 软件系统的价值 行为价值 按需求文档编写代码 可用性 功能性bug 性能 稳定性 紧急,但是并不总是重要,在紧急重要矩阵中占据A、C位置 架构价值 ,研发性和复用性的矛盾,而研发性本身又有粘性(CCP)和排斥性的矛盾(CRP) 架构师做的往往是在这个张立图中找到一个最符合现在需要的点,而这个平衡也是不断变化的,根据项目的规模、迭代的节奏等。 在D满足期望的条件下,约靠近(0,1)和(1,0)越好 软件架构 目的 : 终极目的 :最大化程序员的生产力,最小化系统的总运营成本 细化目的 :支撑软件系统的全生命周期,让系统便于理解、 不同吞吐量、不同的响应时长要求,是架构设计要考虑的点。 架构应起到揭示系统运行的作用 :用例、功能、行为设置应该都对开发者可见的一级实体,以类、函数或模块的形式占据明显位置, 命名能清洗地描述对应的功能 维护 : 探秘成本

    78930发布于 2019-08-06
  • 来自专栏微言码道

    浅析整洁架构之道(一) 为什么需要整洁架构

    Martin提出的The Clean Architecture(中文意为:整洁架构)系列文章第一篇,阐述为什么我们需要一个这样的整洁架构 软件在本质上复杂的 因为,软件在本质上是复杂的 想必所有程序员都会认同这个观点 也就是在编程的道与术中,更关注术而非道 一个非常常见的表现是:程序员在设计架构时,往往优先考虑的一些点是: 选择什么语言,比如Java,Kotlin或Scala等 是否选用Spring框架 是JPA还是 架构中被忽略的一个重要特性: 可维护性 我们在设计或评估一个架构时,需要考量很多点:比如性能,可扩展性,稳定性,可维护性等,在这些要素中,往往性能+可扩展性,集群,缓存等一些特性更被重视与考量,而往往被非常多的程序员包括一些优秀的程序员忽略的一个重要特性是可维护性 因为软件是要一直维护与更新的,你所设计与实现的软件架构不仅要满足当下,更重要的是保证其可持续的迭代与维护,满足于未来 一个现实是:程序员更喜欢做新项目,更不愿意参与到旧有的已存在的项目中,这是因为大家都清楚 ,已有的或旧有的软件往往开发起来更困难,一个重要原因在于其可维护性非常低 用整洁架构解决与改善这些问题 从上述笔者的分析可以明白,整洁架构是为了 让软件更易于应对复杂性 更关注于抽象与方法论而非具体语言技术框架等

    51310发布于 2021-06-21
  • 来自专栏巴啦啦的积累

    架构整洁之道》第 29 章 整洁的嵌入式架构

    只能做到跑起来,充其量只能算作是程序适用测试,而不能算作是一套整洁的嵌入式架构。 目标硬件瓶颈,是嵌入式开发所特有的问题,如果我们没有采用某种清晰的架构,来设计嵌入式系统的代码结构,就经常会面临只能在目标平台上测试代码的难题。如果只能在特定的平台上测试代码,那就会拖慢开发进度。 整洁的嵌入式架构就是可测试的嵌入式架构-分层分层有很多种方式,以三层为例。由于硬件随着科技发展一定会变,所以嵌入式工程师应当避免硬件的变动导致更多的变动。所以硬件需要和软件和固件,进行依赖管理。

    48730编辑于 2023-06-18
  • 来自专栏腾讯技术工程官方号的专栏

    Golang 整洁架构实践

    至此,整洁架构图中的四层已介绍完成。但此图中的四层结构仅作示意,整洁架构并不要求软件系统必须严格按照此四层结构。只要软件系统能保证“由外向内”的依赖规则,系统的层数多少可自由裁决。 同整洁架构齐名的洋葱架构,与其相似,整体结构也是四层同心圆。 此图中可以看到,虽然六边形架构看上去与整洁架构不那么相似,但其应用系统核心层的 Domain ,边缘层的 User Interface 和 Infrastructure 与整洁架构中的 Entities 国内开发者在学习了六边形架构,洋葱架构整洁架构之后,提出了 COLA (Clean Object-oriented and Layered Architecture)架构,其名称含义为“整洁的基于面向对象和分层的架构 Domain 层中 model 对应整洁架构的 Entities,六边形架构和洋葱架构中的 Domain Model。

    1.3K31编辑于 2023-04-01
  • 来自专栏【腾讯云开发者】

    Golang整洁架构实践

    至此,整洁架构图中的四层已介绍完成。但此图中的四层结构仅作示意,整洁架构并不要求软件系统必须按照此四层结构设计。只要软件系统能保证“由外向内”的依赖规则,系统的层数多少可自由决定。 最边缘层的 User Interface 与整洁架构中的最外层 UI 部分一致,Infrastructure 则与整洁架构中的 DB, Devices, External Interfaces 作用一致 此图中可以看到,虽然六边形架构看上去与整洁架构不那么相似,但其应用系统核心层的 Domain 、边缘层的User Interface 和 Infrastructure 与整洁架构中的 Entities 「整洁的基于面向对象和分层的架构」。 Domain 层中 model 对应整洁架构的 Entities、六边形架构和洋葱架构中的 Domain Model。

    2.3K50编辑于 2023-04-06
  • 来自专栏喔家ArchiSelf

    整洁架构or整洁代码?或许需要一个整洁的API!

    在软件架构领域,网上讨论最广泛的架构之一是整洁架构(Clean Architecture)。它通过将项目划分为多个层级,实现关注点分离,从而提升代码的可维护性和可扩展性。 整洁架构的核心理念可以概括为: 依赖关系向内指向“业务核心”,外层可以依赖内层,但内层绝不可以反向依赖外层。 换句话说,没有哪一层可以看到比它更高层的细节。 值得一提的是,在本架构中,Service 类还会组合一组专门的 Validator 类,对请求内容进行语义级别的验证。 在这个过程中,尽管表面上看只需要一个简单的数据库操作,但实际上,这个功能隐式地依赖于我们之前定义的每一层架构。 随着系统规模的增长,这种架构的优势将会更加明显。

    41000编辑于 2025-06-28
  • 来自专栏ThoughtWorks

    整洁架构之CSS

    如果一本正经的聊架构,套路多半是按照某些重要的特征依次展开讲解。但这些所谓的重要特征其实在编程领域中是放之四海而皆准的,例如“扩展性”、“可复用”、“可维护性”等等,按这种思路聊,空谈大于应用。 实现里的问题 Pre-Processer 无论你主观上多么想避免以上的所有问题,给样式一个好的整洁架构。在实现的过程中,我们依然会不小心掉入工具的陷阱中。 你可以想象整个过程需要重新审视架构,从头阅读理解代码,修改完毕后验证。执行这一系列步骤需要不小的成本,还不包括其中的试错,以及因为重构而浪费的添加新功能的机会。 基于上面的三点,同时考虑到当下技术栈繁杂学习成本高,脚本开发工作量大,交付压力重,样式架构的正确性想当然是被牺牲掉的那一个。 最后重申我不鼓励这样的行为,这只是屈服于现实压力下其中的一种可能性而已。 ---- - 相关阅读 - 如何面对数据项目开发和管理中的挑战 为什么我们需要企业架构

    58710编辑于 2022-09-09
  • 来自专栏斑斓

    软件架构编年史:整洁架构

    Martin(大名鼎鼎的 Uncle Bob)于2012年在他的一篇博客中发表了整洁架构的观点,并在一些会议上做了关于该架构的演讲。 ◐ 站在 EBI 架构、六边形架构和洋葱架构的肩膀上 整洁架构的核心目标与端口和适配器(六边形)架构以及洋葱架构是一致的: 工具无关 传达机制无关 独立的可测试性 下面这张图发表在整洁架构的博客中,揭示了该架构的总体思路 正如我们所见,整洁架构包含了六边形架构和洋葱架构的规则。截至目前,整洁架构好像没有加入什么新鲜的概念。 但是,在整洁架构示意图的右下角,还有一张小图... ◐ 站在 MVC 和 EBI 的肩膀上 整洁架构示意图的右下角的这张小图说明了控制流是如何工作的。 ◐ 总结 我不认为整洁架构是革命性的,因为它实际上并没有带来突破性的概念或模式。

    92320编辑于 2023-03-23
  • 来自专栏编舟记

    架构整洁之道导读(一)

    我是《架构整洁之道》(Clean Architecture) 中文版的技术审校者,在审校的过程当中略有感悟,所以希望通过撰写导读的方式分享给大家。 书名的由来 《架构整洁之道》是Clean Architecture的中文译名。 所以在通读了原作和译作之后,我在ThoughtWorks咨询群里发起提案,讨论的过程很精彩,最终在骨灰级架构师新哥的建议下,结果大致趋向了整洁架构。 而读MBA的岳岳和XR从用户思维出发,《代码整洁之道》和《架构整洁之道》可以相互增强记忆,更容易激发用户的购买行为。 即便敲定了“整洁架构”,大家对“之道”也有不同的看法。 《代码整洁之道》对应的原标题和副标题分别是Clean Code - A handbook of Agile Software Craftsmanship,而《架构整洁之道》对应的原标题和副标题分别是Clean

    1.9K80发布于 2018-11-08
  • 来自专栏Golang语言开发栈

    Go 语言整洁架构实践

    01 介绍 Bob 大叔在他的一篇标题为「整洁架构」的博客中提及,现在一些流行的系统架构,都采用软件分层设计,都主张以下 5 个规则: 独立于框架 可测试的 独立于用户界面 独立于数据库 独立于任何外部依赖 本文我们介绍整洁架构在 Go 语言中的实践。 02 整洁架构分层设计 参照 Bob 大叔的整洁架构软件分层设计,我们将架构分层分为以下 4 层: Models Repository Usecase Delivery 其中,Models 与 Entities 示例代码: type TodoListUsecase interface { Create(context.Context, *Todolist) (err error) } 04 总结 本文我们介绍整洁架构的软件分层设计 ,并且通过一个简单的 TodoList 项目,在 Go 语言中实践「整洁架构」的架构设计。

    79420编辑于 2022-05-17
  • 来自专栏编舟记

    架构整洁之道导读(三)

    不能快速响应需求变更的软件架构是一潭死水,也就没有实施任何设计原则的必要了。 既然“向外求玄”不可得,那么“反求诸己”好歹也是条路。鲍勃大叔说,稳定是因为依赖的足够多。 小结 组件之间的耦合应该遵循上述原则的约束,所谓原则就是优秀架构应该有的模样。同时,我们也解答了“自顶而下”的设计不靠谱的深层次原因。 想知道,什么是软件架构?且听下回分解。

    82930发布于 2018-12-06
  • 来自专栏编舟记

    架构整洁之道导读(二)

    我是《架构整洁之道》(Clean Architecture) 中文版的技术审校者,在审校的过程当中略有感悟,所以希望通过撰写导读的方式分享给大家。 难怪有些架构师朋友说,鲍勃大叔老了,又拿着SOLID那一套概念出来忽悠骗钱。

    1K20发布于 2018-12-04
  • 来自专栏编舟记

    架构整洁之道导读(二)续

    关于组件聚合张力图的讨论 周三的午休时间,我在ThoughtWorks北京办公室分享了一场《架构整洁之道导读》。当谈到分享组件聚合原则的时候,很多同事表示难以理解。 另外,鲍勃大叔在介绍架构边界时,也表明了一样的观点:架构的边界并不是服务的边界。 [1] 架构整洁之道导读(一)编程范式 [2] 架构整洁之道导读(三)组件耦合 ----

    99110发布于 2018-12-12
  • 来自专栏IT大咖说

    整洁架构、DDD 和 CQRS 简介

    ◆ 介绍 在这篇博文中,我将介绍整洁架构(Clean Architecture ),它是一种现代、可扩展的正式软件架构,适用于现代 Web 应用程序。 整洁架构的显着特征是组成它的同心层围绕着一个包含抽象和业务逻辑的中央核心。这些抽象的实现,连同它们的外部依赖,被推到外层。 ◆ 整洁的领域驱动设计 我对 Clean DDD 的解读 整洁的领域驱动设计代表了软件架构开发的下一个合乎逻辑的步骤。这种方法源自Blob的原始架构,但在概念上略有不同。 一切都很整洁,并尊重依赖倒置原则。但是,您已经丧失了 CQRS 提供的好处,因为它抽象了跨层边界的组件之间的通信过程本身。CQS 原则指出: 查询系统数据的高级操作不应该产生任何副作用——即修改状态。 ◆ 整洁 DDD + CQRS 一切都导致了这一点。展望未来,我将使用它作为 Web 应用程序开发的主要架构方法,这也是我在演示应用程序中使用的方法。

    9.1K20编辑于 2022-03-04
  • 来自专栏巴啦啦的积累

    架构整洁之道》第 12 章 组件

    组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体。在静态语言中,体现在编译过后的二进制文件。在动态语言中,体验现在一组源代码文件。

    26220编辑于 2023-05-28
  • 从 AI 并行编程再聊整洁架构

    这时候,整洁架构的价值被放大了 整洁架构(Clean Architecture),或者说以领域为中心的那类架构思想——过去大家觉得它“工程感太强”、“太重”、“太学术”。 高内聚——给 AI 提供“完整的业务上下文” 整洁架构、领域驱动设计,都强调: 一个模块必须围绕业务场景完整、统一、内聚。 换句话说:整洁架构让 AI 可以在一个模块里,把事搞明白。 3. 业务优先——这是最适合 AI 理解的结构 整洁架构把业务逻辑放在最核心的位置, 技术细节被包裹在更外层。 未来的架构,将为 AI 而设计 我们逐渐可以看到一个趋势: 整洁架构不是难落地,而是过去的工具不够强。但在 AI 并行时代,它反而成为最高效的组织方式。 这是一个很有意思的转折:过去我们用整洁架构是为了管理人; 未来我们用整洁架构,是为了管理 AI。 但是——AI 再强,也需要一个“规划者” 我想强调一点: AI 能写代码,但不能做架构师。

    15910编辑于 2025-12-16
  • 来自专栏巴啦啦的积累

    架构整洁之道》第 21 章 尖叫的软件架构

    软件系统的架构设计图,也应该非常明确的凸显,该应用程序,会有哪些用例(该应用程序,可以被怎样使用)。架构设计不应该与框架相关,这件事不应该是基于框架来完成的。框架只是一个工具,而不是架构所规范的内容。 架构设计的核心目标一个良好的架构设计应该围绕着用例来展开,这样做可以脱离框架,工具,以及使用环境的情况下完整的描述用例。 而且,良好的架构,应该尽可能地允许用户推迟或延迟采用什么框架,数据库,Web服务以及其他工具。框架应该是一个可选项,良好的架构设计应该允许项目后期再决定是否采用某种工具。 总之,良好的架构设计应该只关注用例,并能将他们与其他周边因素隔离。那 Web 呢Web究竟是不是一种架构。很显然它不是,它只是一种交付手段,一种IO设备,这就是它在架构设计中的角色。 可测试的架构如果系统架构的所有设计,都是围绕着用例来展开的,并且在使用框架的问题上保持谨慎,那么我们就可以做到在不依赖任何框架的情况下,对这些用例进行单元测试。

    56320编辑于 2023-06-07
  • 来自专栏前端博客

    前端代码复用学习笔记:整洁架构与清晰架构

    了解干净架构,可以阅读《前端领域的 “干净架构” https://juejin.cn/post/7054888223830441991》整洁架构Clean Architecture《架构整洁之道》中提出的整洁架构就是解决这个问题的 ,腾讯文档团队也有对整洁架构的相关实践 让 JS 摆脱框架的束缚我们可以将 react 的代码快速的迁移到一个类 react 框架,但是我们很难将他迁移到 Vue 框架和 Angular 框架。 《DDD中常提到的应用架构总结(六边形、洋葱、整洁、清晰) https://blog.csdn.net/luo15242208310/article/details/124708008》架构随时间的演进可参见下图 :整洁前端架构 https://phodal.github.io/clean-frontend/微模块-前端业务模块化探索# https://eluxjs.com/designed/micro-module.html “整洁架构” 和商家前端的重构之路  https://my.oschina.net/u/5783135/blog/5562550转载本站文章《前端代码复用学习笔记:整洁架构与清晰架构》,请注明出处:https

    1.2K20编辑于 2023-03-18
  • 来自专栏coderidea

    架构整洁之道读书笔记(一)

    架构整洁之道》是创造“Clean神话”的Bob大叔在架构领域的登峰之作。本篇是架构整洁之道读书笔记的开篇。 《架构整洁之道》围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及所有核心架构模式。 对于每一位软件研发从业人员——无论从事的是具体编码实现、架构设计,还是软件研发管理,《架构整洁之道》都是不可或缺的。 第一章 设计与架构究竟是什么? 软件架构师这一职责的本身就应该关注系统的整体架构,而不是具体的功能 和系统行为的实现。软件架构师必须创建出一个让功能实现起来更容易、修改起来更简单、扩展起来更轻松的架构 。 前两章作者分别从软件架构的目标、软件系统架构的优劣评价标准、软件系统价值三个方面阐述。在认识软件系统架构具体的规则前,让我们先对软件架构整体上有了一定的认识。确定了软件系统架构设计是重要的一件事情。

    49810编辑于 2022-06-08
领券